/*
 * @Description: 
 * @Author: wangqi
 * @Date: 2021-04-24 17:53:40
 * @LastEditTime: 2021-04-24 19:29:32
 */

/***
source 为以下部分:
body {
    background-color: @color;
    background: url(./timg.jpg);
}
但是这样打包后的url地址是没法找到的, 所以需要改成 require 的形式获取url

如下:
body {
    background-color: @color;
    background: url(require('./timg.jpg'));
}

这样就需要三部分来拼接
last
---------
body {
    background-color: @color;
    background:

matchUrl.length
---------
    url(./timg.jpg)

以及最后的部分
---------
;}

 */

function loader(source) {
    let reg = /url\((.+?)\)/g;
    let pos = 0;
    let current;
    let arr = ['let list = []'];

    while (current = reg.exec(source)) {
        let [matchUrl, g] = current;    // ["url('./timg.jpg')", "./timg.jpg"]
        // reg.lastIndex 表示匹配到url) 的位置
        let last = reg.lastIndex - matchUrl.length;
        arr.push(`list.push(${JSON.stringify(source.slice(pos, last))})`);
        pos = reg.lastIndex;
        arr.push(`list.push('url(require("${g}"))')`);
    }

    arr.push(`list.push(${JSON.stringify(source.slice(pos))})`);
    arr.push(`module.exports = list.join('')`);
    return arr.join('\r\n');
};

module.exports = loader;
